﻿define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {

    var Controller = {
        index: function () {
            // 引入通用的城市学校过滤JS文件
            var script = document.createElement('script');
            script.src = '/assets/js/backend/common/index.js';
            document.head.appendChild(script);
            
            Table.api.init({
                extend: {
                    index_url: 'message/message/index',
                    add_url: 'message/message/add',
                    edit_url: 'message/message/edit',
                    del_url: 'message/message/del',
                    multi_url: 'message/message/multi',
                    table: 'fa_message',
                }
            });

            var table = $("#table");

            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                escape: false,
                pk: 'id',
                sortName: 'weigh',
                columns: [
                    [
                        { checkbox: true },
                        { field: 'id', title: __('Id') },
                        { field: 'city_id', title: '城市', sortable: true },
                        { field: 'school_id', title: '学校', sortable: true },
                        { field: 'title', title: '标题', operate: 'LIKE',align:'left' },
                        { field: 'create_time', title: '创建时间', formatter: Table.api.formatter.datetime },
                        { field: 'status', title: '状态', formatter: Table.api.formatter.status },
                        {
                            field: 'operate',
                            title: __('Operate'),
                            table: table,
                            events: Table.api.events.operate,
                            formatter: Table.api.formatter.operate
                        }
                    ]
                ]
            });

            Table.api.bindevent(table);
        },
        add: function () {
            var script = document.createElement('script');
            script.src = '/assets/js/backend/common/add.js?';
            document.head.appendChild(script);
            Controller.api.bindevent();
        },
        edit: function () {
            var script = document.createElement('script');
            script.src = '/assets/js/backend/common/add.js?';
            document.head.appendChild(script);
            Controller.api.bindevent();
        },
        api: {
            bindevent: function () {
                Form.api.bindevent($("form[role=form]"));
                
                // 表单类型切换功能
                $(document).on('change', 'input[name="row[form_type]"]', function() {
                    var formType = $(this).val();
                    var $formDesignGroup = $('#form-design-area'); // 修改为正确的ID
                    
                    if (formType === '2') { // 有表单
                        $formDesignGroup.show();
                    } else { // 无表单
                        $formDesignGroup.hide();
                        // 清空表单设计内容
                        $('#form-config-data').val(''); // 修改为正确的ID
                    }
                });
                
                // 页面加载时初始化表单类型显示状态
                $(document).ready(function() {
                    var checkedFormType = $('input[name="row[form_type]"]:checked').val();
                    var $formDesignGroup = $('#form-design-area'); // 修改为正确的ID
                    
                    if (checkedFormType === '2') {
                        $formDesignGroup.show();
                    } else {
                        $formDesignGroup.hide();
                    }
                });
                
                // 立即发送按钮功能
                $(document).on('click', '#btn-send-now', function(e) {
                    e.preventDefault();
                    
                    var $form = $("form[role=form]");
                    var formData = $form.serialize();
                    
                    // 验证必填字段
                    if (!$('#c-title').val().trim()) {
                        Layer.msg('请填写标题', {icon: 2});
                        return false;
                    }
                    
                    if (!$('#c-content').val().trim()) {
                        Layer.msg('请填写内容', {icon: 2});
                        return false;
                    }
                    
                    // 确认发送
                    Layer.confirm('确定要立即发送这条消息吗？', {
                        icon: 3,
                        title: '确认发送'
                    }, function(index) {
                        // 添加立即发送标识
                        formData += '&send_now=1';
                        
                        // 发送请求
                        $.ajax({
                            url: $form.attr('action') || Fast.api.fixurl('message/message/add'),
                            type: 'POST',
                            data: formData,
                            dataType: 'json',
                            beforeSend: function() {
                                $('#btn-send-now').prop('disabled', true).text('发送中...');
                            },
                            success: function(ret) {
                                if (ret.code === 1) {
                                    Layer.msg('消息发送成功！', {icon: 1}, function() {
                                        // 跳转到列表页
                                        Fast.api.close();
                                    });
                                } else {
                                    Layer.msg(ret.msg || '发送失败', {icon: 2});
                                }
                            },
                            error: function() {
                                Layer.msg('网络错误，发送失败', {icon: 2});
                            },
                            complete: function() {
                                $('#btn-send-now').prop('disabled', false).text('立即发送');
                                Layer.close(index);
                            }
                        });
                    });
                });
                
                // 预约报名项目下拉框联动（如果需要从后端获取数据）
                $(document).on('change', '#c-booking_project', function() {
                    var projectId = $(this).val();
                    if (projectId) {
                        // 可以在这里添加根据项目ID获取相关信息的逻辑
                    }
                });
                
                // 表单设计器功能增强（可选）
                $(document).on('focus', '#c-form_design', function() {
                    // 可以在这里添加表单设计器的提示信息
                    if (!$(this).val()) {
                        $(this).attr('placeholder', '请输入表单字段配置，例如：姓名|name|text|required\n电话|phone|tel|required\n备注|remark|textarea|optional');
                    }
                });
                
                // 添加字段按钮功能
                $(document).on('click', '#add-form-field', function(e) {
                    e.preventDefault();
                    
                    var fieldHtml = `
                        <div class="form-field-item" style="border: 1px solid #ddd; padding: 10px; margin-bottom: 10px; border-radius: 4px;">
                            <div class="row">
                                <div class="col-md-3">
                                    <label>字段名称:</label>
                                    <input type="text" class="form-control field-label" placeholder="如：姓名">
                                </div>
                                <div class="col-md-3">
                                    <label>字段标识:</label>
                                    <input type="text" class="form-control field-name" placeholder="如：name">
                                </div>
                                <div class="col-md-2">
                                    <label>字段类型:</label>
                                    <select class="form-control field-type">
                                        <option value="text">文本框</option>
                                        <option value="textarea">多行文本</option>
                                        <option value="select">下拉选择</option>
                                        <option value="radio">单选按钮</option>
                                        <option value="checkbox">复选框</option>
                                        <option value="date">日期</option>
                                        <option value="tel">电话</option>
                                        <option value="email">邮箱</option>
                                    </select>
                                </div>
                                <div class="col-md-2">
                                    <label>是否必填:</label>
                                    <select class="form-control field-required">
                                        <option value="0">否</option>
                                        <option value="1">是</option>
                                    </select>
                                </div>
                                <div class="col-md-2">
                                    <label>操作:</label><br>
                                    <button type="button" class="btn btn-danger btn-sm remove-field">
                                        <i class="fa fa-trash"></i> 删除
                                    </button>
                                </div>
                            </div>
                            <div class="row" style="margin-top: 10px;">
                                <div class="col-md-12">
                                    <label>选项配置 (仅下拉选择、单选、复选框需要):</label>
                                    <input type="text" class="form-control field-options" placeholder="格式：选项1|选项2|选项3">
                                </div>
                            </div>
                        </div>
                    `;
                    
                    $('#form-fields-container').append(fieldHtml);
                    updateFormConfig();
                });
                
                // 删除字段功能
                $(document).on('click', '.remove-field', function(e) {
                    e.preventDefault();
                    $(this).closest('.form-field-item').remove();
                    updateFormConfig();
                });
                
                // 字段变化时更新配置
                $(document).on('change keyup', '.form-field-item input, .form-field-item select', function() {
                    updateFormConfig();
                });
                
                // 更新表单配置数据
                function updateFormConfig() {
                    var formConfig = [];
                    $('.form-field-item').each(function() {
                        var $item = $(this);
                        var fieldData = {
                            label: $item.find('.field-label').val(),
                            name: $item.find('.field-name').val(),
                            type: $item.find('.field-type').val(),
                            required: $item.find('.field-required').val(),
                            options: $item.find('.field-options').val()
                        };
                        
                        if (fieldData.label && fieldData.name) {
                            formConfig.push(fieldData);
                        }
                    });
                    
                    $('#form-config-data').val(JSON.stringify(formConfig));
                }
            }
        }
    };

    return Controller;
});
